#ifndef _IMAGE_FILTER_H_
#define _IMAGE_FILTER_H_

#include "Common.h"

extern int maskLaplacian[];
extern int maskSobelX[];
extern int maskSobelY[];
extern int maskPrewittX[];
extern int maskPrewittY[];
extern int maskGaussian[];

void filterImage(LPBYTE lpDest, LPBYTE lpSrc, int width, int height, int maskEachLength, int* mask1,
                 int* mask2 = NULL);
void filterImage(LPWORD lpDest, LPWORD lpSrc, int width, int height, int maskEachLength, int* mask1,
                 int* mask2 = NULL);

void filterMin(LPBYTE lpDest, LPBYTE lpSrc, int width, int height, int fX = 1, int fY = 1);
void filterMin(LPWORD lpDest, LPWORD lpSrc, int width, int height, int fX = 1, int fY = 1);
void filterMax(LPBYTE lpDest, LPBYTE lpSrc, int width, int height, int fX = 1, int fY = 1);
void filterMax(LPWORD lpDest, LPWORD lpSrc, int width, int height, int fX = 1, int fY = 1);

void mopOpening(LPBYTE lpDest, LPBYTE lpSrc, int width, int height, int fX = 1, int fY = 1);
void mopOpening(LPWORD lpDest, LPWORD lpSrc, int width, int height, int fX = 1, int fY = 1);
void mopClosing(LPBYTE lpDest, LPBYTE lpSrc, int width, int height, int fX = 1, int fY = 1);
void mopClosing(LPWORD lpDest, LPWORD lpSrc, int width, int height, int fX = 1, int fY = 1);

#endif
